// let Promise = require('./1.promise');


let fs = require('fs'); // 充分利用then方法
function read(url) {
  return new Promise(function(resolve,reject) {
    fs.readFile(url, 'utf8', function (err, data) {
      if(err) return reject(err);
      resolve(data);
    })
  })
}
// 1) promise中then的特点 如果promise then方法的成功回调 或者失败回调执行后返回的是一个promise,会让这个promise执行 回调用then方法
// 2) 只要成功或者失败的回调有返回值不管是什么 都会走外层的then的成功
// 3) 返回的promise失败了 会走失败 如果抛出异常了会走失败
// 4）就近原则 先找最近的err 捕获 找不到 就向下找捕获
read('./name.txt').then(function (data) { // data=>age.txt
  return read(data+'1'); // read('age.txt') => promise.then
}).then(function (val) {
  console.log(val);
}).then(function (data) {
  throw new Error();
}).then().then(function () {
  console.log('success');
  return 100;
}).then(function (data) {
  console.log(data);
}).catch(function (err) {
  console.log('catch', err)
  return undefined
}) // 穿透

